Nico Rieck: this patch series fixes visibility issues on Windows as explained in <http://lists.cs.uiuc.edu/pipermail/cfe-dev/2013-August/031214.html>. git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@188192 91177308-0d34-0410-b5e6-96231b3b80d8 
diff --git a/include/random b/include/random index 2e7a485..7fc2167 100644 --- a/include/random +++ b/include/random 
@@ -1813,7 +1813,7 @@  };    template <class _UIntType, _UIntType __a, _UIntType __c, _UIntType __m> -class _LIBCPP_TYPE_VIS linear_congruential_engine; +class _LIBCPP_TYPE_VIS_ONLY linear_congruential_engine;    template <class _CharT, class _Traits,  class _Up, _Up _Ap, _Up _Cp, _Up _Np> @@ -1829,7 +1829,7 @@  linear_congruential_engine<_Up, _Ap, _Cp, _Np>& __x);    template <class _UIntType, _UIntType __a, _UIntType __c, _UIntType __m> -class _LIBCPP_TYPE_VIS linear_congruential_engine +class _LIBCPP_TYPE_VIS_ONLY linear_congruential_engine  {  public:  // types @@ -2011,7 +2011,7 @@  template <class _UIntType, size_t __w, size_t __n, size_t __m, size_t __r,  _UIntType __a, size_t __u, _UIntType __d, size_t __s,  _UIntType __b, size_t __t, _UIntType __c, size_t __l, _UIntType __f> -class _LIBCPP_TYPE_VIS mersenne_twister_engine; +class _LIBCPP_TYPE_VIS_ONLY mersenne_twister_engine;    template <class _UI, size_t _Wp, size_t _Np, size_t _Mp, size_t _Rp,  _UI _Ap, size_t _Up, _UI _Dp, size_t _Sp, @@ -2053,7 +2053,7 @@  template <class _UIntType, size_t __w, size_t __n, size_t __m, size_t __r,  _UIntType __a, size_t __u, _UIntType __d, size_t __s,  _UIntType __b, size_t __t, _UIntType __c, size_t __l, _UIntType __f> -class _LIBCPP_TYPE_VIS mersenne_twister_engine +class _LIBCPP_TYPE_VIS_ONLY mersenne_twister_engine  {  public:  // types @@ -2499,7 +2499,7 @@  // subtract_with_carry_engine    template<class _UIntType, size_t __w, size_t __s, size_t __r> -class _LIBCPP_TYPE_VIS subtract_with_carry_engine; +class _LIBCPP_TYPE_VIS_ONLY subtract_with_carry_engine;    template<class _UI, size_t _Wp, size_t _Sp, size_t _Rp>  bool @@ -2527,7 +2527,7 @@  subtract_with_carry_engine<_UI, _Wp, _Sp, _Rp>& __x);    template<class _UIntType, size_t __w, size_t __s, size_t __r> -class _LIBCPP_TYPE_VIS subtract_with_carry_engine +class _LIBCPP_TYPE_VIS_ONLY subtract_with_carry_engine  {  public:  // types @@ -2810,7 +2810,7 @@  // discard_block_engine    template<class _Engine, size_t __p, size_t __r> -class _LIBCPP_TYPE_VIS discard_block_engine +class _LIBCPP_TYPE_VIS_ONLY discard_block_engine  {  _Engine __e_;  int __n_; @@ -2983,7 +2983,7 @@  // independent_bits_engine    template<class _Engine, size_t __w, class _UIntType> -class _LIBCPP_TYPE_VIS independent_bits_engine +class _LIBCPP_TYPE_VIS_ONLY independent_bits_engine  {  template <class _UI, _UI _R0, size_t _Wp, size_t _Mp>  class __get_n @@ -3246,7 +3246,7 @@  };    template<class _Engine, size_t __k> -class _LIBCPP_TYPE_VIS shuffle_order_engine +class _LIBCPP_TYPE_VIS_ONLY shuffle_order_engine  {  static_assert(0 < __k, "shuffle_order_engine invalid parameters");  public: @@ -3507,7 +3507,7 @@    // seed_seq   -class _LIBCPP_TYPE_VIS seed_seq +class _LIBCPP_TYPE_VIS_ONLY seed_seq  {  public:  // types @@ -3684,13 +3684,13 @@  // uniform_real_distribution    template<class _RealType = double> -class _LIBCPP_TYPE_VIS uniform_real_distribution +class _LIBCPP_TYPE_VIS_ONLY uniform_real_distribution  {  public:  // types  typedef _RealType result_type;   - class _LIBCPP_TYPE_VIS param_type + class _LIBCPP_TYPE_VIS_ONLY param_type  {  result_type __a_;  result_type __b_; @@ -3805,13 +3805,13 @@    // bernoulli_distribution   -class _LIBCPP_TYPE_VIS bernoulli_distribution +class _LIBCPP_TYPE_VIS_ONLY bernoulli_distribution  {  public:  // types  typedef bool result_type;   - class _LIBCPP_TYPE_VIS param_type + class _LIBCPP_TYPE_VIS_ONLY param_type  {  double __p_;  public: @@ -3914,13 +3914,13 @@  // binomial_distribution    template<class _IntType = int> -class _LIBCPP_TYPE_VIS binomial_distribution +class _LIBCPP_TYPE_VIS_ONLY binomial_distribution  {  public:  // types  typedef _IntType result_type;   - class _LIBCPP_TYPE_VIS param_type + class _LIBCPP_TYPE_VIS_ONLY param_type  {  result_type __t_;  double __p_; @@ -4079,13 +4079,13 @@  // exponential_distribution    template<class _RealType = double> -class _LIBCPP_TYPE_VIS exponential_distribution +class _LIBCPP_TYPE_VIS_ONLY exponential_distribution  {  public:  // types  typedef _RealType result_type;   - class _LIBCPP_TYPE_VIS param_type + class _LIBCPP_TYPE_VIS_ONLY param_type  {  result_type __lambda_;  public: @@ -4194,13 +4194,13 @@  // normal_distribution    template<class _RealType = double> -class _LIBCPP_TYPE_VIS normal_distribution +class _LIBCPP_TYPE_VIS_ONLY normal_distribution  {  public:  // types  typedef _RealType result_type;   - class _LIBCPP_TYPE_VIS param_type + class _LIBCPP_TYPE_VIS_ONLY param_type  {  result_type __mean_;  result_type __stddev_; @@ -4362,13 +4362,13 @@  // lognormal_distribution    template<class _RealType = double> -class _LIBCPP_TYPE_VIS lognormal_distribution +class _LIBCPP_TYPE_VIS_ONLY lognormal_distribution  {  public:  // types  typedef _RealType result_type;   - class _LIBCPP_TYPE_VIS param_type + class _LIBCPP_TYPE_VIS_ONLY param_type  {  normal_distribution<result_type> __nd_;  public: @@ -4487,13 +4487,13 @@  // poisson_distribution    template<class _IntType = int> -class _LIBCPP_TYPE_VIS poisson_distribution +class _LIBCPP_TYPE_VIS_ONLY poisson_distribution  {  public:  // types  typedef _IntType result_type;   - class _LIBCPP_TYPE_VIS param_type + class _LIBCPP_TYPE_VIS_ONLY param_type  {  double __mean_;  double __s_; @@ -4718,13 +4718,13 @@  // weibull_distribution    template<class _RealType = double> -class _LIBCPP_TYPE_VIS weibull_distribution +class _LIBCPP_TYPE_VIS_ONLY weibull_distribution  {  public:  // types  typedef _RealType result_type;   - class _LIBCPP_TYPE_VIS param_type + class _LIBCPP_TYPE_VIS_ONLY param_type  {  result_type __a_;  result_type __b_; @@ -4832,13 +4832,13 @@  }    template<class _RealType = double> -class _LIBCPP_TYPE_VIS extreme_value_distribution +class _LIBCPP_TYPE_VIS_ONLY extreme_value_distribution  {  public:  // types  typedef _RealType result_type;   - class _LIBCPP_TYPE_VIS param_type + class _LIBCPP_TYPE_VIS_ONLY param_type  {  result_type __a_;  result_type __b_; @@ -4953,13 +4953,13 @@  // gamma_distribution    template<class _RealType = double> -class _LIBCPP_TYPE_VIS gamma_distribution +class _LIBCPP_TYPE_VIS_ONLY gamma_distribution  {  public:  // types  typedef _RealType result_type;   - class _LIBCPP_TYPE_VIS param_type + class _LIBCPP_TYPE_VIS_ONLY param_type  {  result_type __alpha_;  result_type __beta_; @@ -5125,13 +5125,13 @@  // negative_binomial_distribution    template<class _IntType = int> -class _LIBCPP_TYPE_VIS negative_binomial_distribution +class _LIBCPP_TYPE_VIS_ONLY negative_binomial_distribution  {  public:  // types  typedef _IntType result_type;   - class _LIBCPP_TYPE_VIS param_type + class _LIBCPP_TYPE_VIS_ONLY param_type  {  result_type __k_;  double __p_; @@ -5260,13 +5260,13 @@  // geometric_distribution    template<class _IntType = int> -class _LIBCPP_TYPE_VIS geometric_distribution +class _LIBCPP_TYPE_VIS_ONLY geometric_distribution  {  public:  // types  typedef _IntType result_type;   - class _LIBCPP_TYPE_VIS param_type + class _LIBCPP_TYPE_VIS_ONLY param_type  {  double __p_;  public: @@ -5362,13 +5362,13 @@  // chi_squared_distribution    template<class _RealType = double> -class _LIBCPP_TYPE_VIS chi_squared_distribution +class _LIBCPP_TYPE_VIS_ONLY chi_squared_distribution  {  public:  // types  typedef _RealType result_type;   - class _LIBCPP_TYPE_VIS param_type + class _LIBCPP_TYPE_VIS_ONLY param_type  {  result_type __n_;  public: @@ -5468,13 +5468,13 @@  // cauchy_distribution    template<class _RealType = double> -class _LIBCPP_TYPE_VIS cauchy_distribution +class _LIBCPP_TYPE_VIS_ONLY cauchy_distribution  {  public:  // types  typedef _RealType result_type;   - class _LIBCPP_TYPE_VIS param_type + class _LIBCPP_TYPE_VIS_ONLY param_type  {  result_type __a_;  result_type __b_; @@ -5591,13 +5591,13 @@  // fisher_f_distribution    template<class _RealType = double> -class _LIBCPP_TYPE_VIS fisher_f_distribution +class _LIBCPP_TYPE_VIS_ONLY fisher_f_distribution  {  public:  // types  typedef _RealType result_type;   - class _LIBCPP_TYPE_VIS param_type + class _LIBCPP_TYPE_VIS_ONLY param_type  {  result_type __m_;  result_type __n_; @@ -5713,13 +5713,13 @@  // student_t_distribution    template<class _RealType = double> -class _LIBCPP_TYPE_VIS student_t_distribution +class _LIBCPP_TYPE_VIS_ONLY student_t_distribution  {  public:  // types  typedef _RealType result_type;   - class _LIBCPP_TYPE_VIS param_type + class _LIBCPP_TYPE_VIS_ONLY param_type  {  result_type __n_;  public: @@ -5826,13 +5826,13 @@  // discrete_distribution    template<class _IntType = int> -class _LIBCPP_TYPE_VIS discrete_distribution +class _LIBCPP_TYPE_VIS_ONLY discrete_distribution  {  public:  // types  typedef _IntType result_type;   - class _LIBCPP_TYPE_VIS param_type + class _LIBCPP_TYPE_VIS_ONLY param_type  {  vector<double> __p_;  public: @@ -6057,13 +6057,13 @@  // piecewise_constant_distribution    template<class _RealType = double> -class _LIBCPP_TYPE_VIS piecewise_constant_distribution +class _LIBCPP_TYPE_VIS_ONLY piecewise_constant_distribution  {  public:  // types  typedef _RealType result_type;   - class _LIBCPP_TYPE_VIS param_type + class _LIBCPP_TYPE_VIS_ONLY param_type  {  vector<result_type> __b_;  vector<result_type> __densities_; @@ -6381,13 +6381,13 @@  // piecewise_linear_distribution    template<class _RealType = double> -class _LIBCPP_TYPE_VIS piecewise_linear_distribution +class _LIBCPP_TYPE_VIS_ONLY piecewise_linear_distribution  {  public:  // types  typedef _RealType result_type;   - class _LIBCPP_TYPE_VIS param_type + class _LIBCPP_TYPE_VIS_ONLY param_type  {  vector<result_type> __b_;  vector<result_type> __densities_;